package net.comfycastle.musicplayer;

import android.os.Bundle;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.FragmentTransaction;

/**
 * 이 어플리케이션에서 쓰이는 대부분의 리스트 액티비티의 부모 액티비티
 * Application 클래스(MPApp)와의 연결,
 * 현재 재생 정보 프래그먼트(FragNowPlaying) 제어 등을 기본 기능으로 갖고 있다.
 * @author ricale
 *
 */
abstract public class BaseActivity extends FragmentActivity {
	///////////
	//////////
	/////////   constant
	
	/** 현재 재생 정보 프래그먼트(FragNowPlaying)의 부모 레이아웃의 리소스 아이디. */
	private final static int CONTAINER_ID = R.id.layout;
	
	///////////
	//////////
	/////////   variable
	
	/** 현재 재생 정보를 출력하는 프래그먼트 */
	private NowPlayingInfoFragment mFragNP;
	
	///////////
	//////////
	/////////   lifecycle callback method
	
	/**
	 * BaseActivity의 초기화 콜백 메서드
	 */
	@Override
	protected void onCreate(Bundle savedInstanceState) 	{
		super.onCreate(savedInstanceState);
		
		mFragNP = new NowPlayingInfoFragment();
	} // end onCreate
	
	/**
	 * 액티비티가 활성화 되었을 때 실행될 콜백 메소드
	 * 주로 현재 재생 정보 프래그먼트(FragNowPlaying)의 활성화/비활성화를 담당한다.
	 */
	@Override
	public void onResume() {
		super.onResume();
		
		if(MusicUtility.isBindedService() && MusicUtility.isReady() && MusicUtility.isPlaying()) {
			if(!mFragNP.isAdded()) {
				FragmentTransaction fragmentTransaction = getSupportFragmentManager().beginTransaction();
				fragmentTransaction.add(CONTAINER_ID, mFragNP);
				fragmentTransaction.commit();
			} else if(mFragNP.isHidden()) {
				FragmentTransaction fragmentTransaction = getSupportFragmentManager().beginTransaction();
				fragmentTransaction.show(mFragNP);
				fragmentTransaction.commit();
			} // end if
		} else {
			if(mFragNP.isAdded() && !mFragNP.isHidden()) {
				FragmentTransaction fragmentTransaction = getSupportFragmentManager().beginTransaction();
				fragmentTransaction.hide(mFragNP);
				fragmentTransaction.commit();
			} // end if
		} // end if
	} // end onResume
} // end BaseActivity